package main.java.ensao.cryptography.rsamodule;

import java.math.BigInteger;
import java.security.SecureRandom;

/**
 * Cette classe permet la génération de la clé publique (n, e)
 * 
 */
public class PublicKey {

	public static BigInteger calcul_pq() {
		SecureRandom r = new SecureRandom();
		BigInteger p = new BigInteger(100 / 2, 100, r);

		return p;
	}

	/**
	 * Méthode qui calcul le modulo n
	 * 
	 * @param p
	 * @param q
	 * @return
	 */
	public static BigInteger calcul_n(BigInteger p, BigInteger q) {

		return p.multiply(q);
	}

	/**
	 * Méthode qui permet de générer le "e"
	 * 
	 * @param p
	 * @param q
	 * @return
	 */

	private BigInteger n, d, e;

	public static BigInteger generate_e(BigInteger p, BigInteger q) {

		BigInteger un = new BigInteger("1");

		BigInteger fi = (p.subtract(BigInteger.ONE)).multiply(q
				.subtract(BigInteger.ONE));

		BigInteger result = Utils.randomBigInteger(fi);

		if (Utils.calcul_pgcd(result, fi).equals(un)) {
			return (result);
		}

		else
			return (generate_e(p, q));

	}

}
